/*
 * @Description: 测试类
 * @Author: rendc
 * @Date: 2025-08-04 11:32:56
 * @LastEditors: rendc
 * @LastEditTime: 2025-08-04 14:11:59
 */

public class Test {

  public static void main(String[] args) {
    // 多态 向上转型 子类对象指向父类引用
    Base base = new Derived();
    // 运行看右边(子类)
    base.show();// n 2 v 20
    // 运行看左边(父类)
    System.out.println("base.n:" + base.n); // n = 1
    // 编译看左边(父类)
    // System.out.println("base.v:" + base.v); // 编译错误 找不到符号
    // base.disp();// 父类中没有 编译失败 找不到符号
    // 实现向下转型 解决向上转型中访问不到的子类特有的属性和方法
    // Base base = new Derived(); // 向上转型是前提
    Derived derived = (Derived) base;
    // 直接访问子类独有的属性
    System.out.println("base.v:" + derived.v);
    // 直接访问子类独有的方法
    derived.disp();
  }
}